package platzerworld.kegeln.gui.chart;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import platzerworld.kegeln.common.ConstantsIF;
import platzerworld.kegeln.db.ergebnis.ErgebnisSpeicher;
import platzerworld.kegeln.vo.ergebnis.ErgebnisVO;
import platzerworld.kegeln.vo.spieler.SpielerVO;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;

/**
 * 
 * @author platzerg
 * 
 */
public class KegelverwaltungChart extends ListActivity implements ConstantsIF {
	private static final long serialVersionUID = -5692041794639104583L;

	private ErgebnisSpeicher mErgebnisSpeicher;

	private SpielerVO mSpielerVO;

	private IChart[] mCharts = new IChart[] { new KegelverwaltungLineChart(),
			new KegelverwaltungTimeChart(), };

	private String[] mMenuText;

	private String[] mMenuSummary;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		Bundle extras = getIntent().getExtras();
		if (extras == null) {
			return;
		}

		mSpielerVO = (SpielerVO) extras.getSerializable(INTENT_EXTRA_SPIELER);

		init();

		int length = mCharts.length;
		mMenuText = new String[2];
		mMenuSummary = new String[2];
		for (int i = 0; i < length; i++) {
			mMenuText[i] = mCharts[i].getName();
			mMenuSummary[i] = mCharts[i].getDesc();
		}
		setListAdapter(new SimpleAdapter(this, getListValues(),
				android.R.layout.simple_list_item_2, new String[] {
						IChart.NAME, IChart.DESC }, new int[] {
						android.R.id.text1, android.R.id.text2 }));
	}

	@Override
	protected void onDestroy() {
		cleanDatabase();
		super.onDestroy();
	}

	@Override
	protected void onResume() {
		super.onResume();
	}

	private void init() {
		initWidgets();
		bindWidgets();
		initStyle();
		initListener();
		initContextMenu();
		initDatabase();
	}

	private void bindWidgets() {
	}

	private void initStyle() {
	}

	private void initWidgets() {
	}

	private void initListener() {

	}

	private void initContextMenu() {
	}

	private void initDatabase() {
		mErgebnisSpeicher = new ErgebnisSpeicher(this);
	}

	private void cleanDatabase() {
		if (null != mErgebnisSpeicher) {
			mErgebnisSpeicher.schliessen();
		}
	}

	private List<Map<String, String>> getListValues() {
		List<Map<String, String>> values = new ArrayList<Map<String, String>>();
		int length = mMenuText.length;
		for (int i = 0; i < length; i++) {
			Map<String, String> v = new HashMap<String, String>();
			v.put(IChart.NAME, mMenuText[i]);
			v.put(IChart.DESC, mMenuSummary[i]);
			values.add(v);
		}
		return values;
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		List<ErgebnisVO> ergebniss = mErgebnisSpeicher
				.ladeErgebnisZumSpielerListeVO(mSpielerVO.id);
		mCharts[position].putData(ergebniss);
		Intent intent = null;
		intent = mCharts[position].execute(this, 1);
		startActivity(intent);
	}
}